Integrated circuits often contain volatile memory elements. In programmable integrated circuits, volatile memory elements can be used to store configuration data. This type of memory is sometimes referred to as configuration random-access memory (CRAM).
Programmable integrated circuits can be customized in relatively small batches to implement a desired logic design. In a typical scenario, a programmable integrated circuit manufacturer designs and manufactures uncustomized programmable integrated circuits in advance. A logic designer may then use a logic design system to design a custom logic circuit. The logic design system uses information on the hardware capabilities of the manufacturer's programmable integrated circuit to help the designer implement the logic circuit using the resources available on a given programmable integrated circuit.
The logic design system creates configuration data based on the logic designer's custom design. When the configuration data is loaded into the configuration random-access memory elements of one of the programmable integrated circuits, it programs the circuitry of that programmable integrated circuit so that the programmable integrated circuit implements the designer's logic circuit. The use of programmable integrated circuits can significantly reduce the amount of effort required to implement a desired integrated circuit design.
Programmable circuits on a programmable integrated circuit contain pass gates that are controlled by corresponding configuration random-access memory elements. The value of the output from a configuration random-access memory element is used to control whether an associated pass gate is turned on or off, thereby configuring programmable circuitry that contains the pass gate.